package logica.pruebas;

import java.awt.Color;
import java.rmi.RemoteException;

import logica.clases.Coordenada;
import logica.clases.Jugador;
import logica.clases.Pais;
import logica.clases.Partida;
import logica.colecciones.Jugadores;
import logica.colecciones.Mapa;
import logica.colecciones.Partidas;
import logica.datatypes.Jugador.DataJugador_R11;
import logica.datatypes.Pais.DataPais_R11;
import logica.excepciones.JugadoresException;
import logica.excepciones.PaisesException;
import logica.excepciones.PartidaException;
import logica.fachadas.FachadaJugadores;
import persistencia.PersistenciaException;

public class PruebaFachadaJugadores {
	public static void main(String[] args)throws RemoteException, PartidaException, PersistenciaException, JugadoresException, PaisesException{
		FachadaJugadores fachadaJug = new FachadaJugadores();
		
		Coordenada coordenada1 = new Coordenada(3,5), coordenada2 = new Coordenada(1,2), coordenada3 = new Coordenada(2,2),
		coordenada4 = new Coordenada(3,2), coordenada5 = new Coordenada(5,3), coordenada6 = new Coordenada(3,6);
		Mapa mapa = new Mapa();
		try {
			Partidas partidas = Partidas.getInstancia();
			Jugadores jugadores = new Jugadores(2);
			Jugador jug = new Jugador(1, "DD", Color.blue);
			Jugador jugA = new Jugador(2, "AA", Color.gray);
			jugadores.insertar(jug);
			jugadores.insertar(jugA);
			Partida partida = new Partida("Partida1", jugadores);
			System.out.println("Partida creada");
			System.out.println(partida.getCodigo());
			partidas.insert(partida);
			System.out.println("Partida ingresada");
			
			Jugadores jugadores1 = new Jugadores(3);
			Jugador jug1 = new Jugador(1, "Jose", Color.WHITE);
			Jugador jug2 = new Jugador(2, "Pedro", Color.BLACK);
			Jugador jug3 = new Jugador(2, "Maria", Color.BLUE);
			jugadores1.insertar(jug1);
			jugadores1.insertar(jug2);
			jugadores1.insertar(jug3);
			
			Partida partida1 = new Partida("Partida1", jugadores1);
			
			Jugadores jugadores2 = new Jugadores(5);
			Jugador jug4 = new Jugador(1, "Jose", Color.WHITE);
			Jugador jug5 = new Jugador(2, "Pedro", Color.BLACK);
			Jugador jug6 = new Jugador(3, "Maria", Color.BLUE);
			Jugador jug7 = new Jugador(4, "Juan", Color.CYAN);
			Jugador jug8 = new Jugador(5, "Rosa", Color.GRAY);
			jugadores2.insertar(jug4);
			jugadores2.insertar(jug5);
			jugadores2.insertar(jug6);
			jugadores2.insertar(jug7);
			jugadores2.insertar(jug8);
			Partida partida2 = new Partida("Partida2", jugadores2);
			
			Jugadores jugadores3 = new Jugadores(3);
			Jugador jug9 = new Jugador(1, "Pedro", Color.BLACK);
			Jugador jug10 = new Jugador(2, "Maria", Color.BLUE);
			Jugador jug11 = new Jugador(3, "Rosa", Color.GRAY);	
			jugadores3.insertar(jug9);
			jugadores3.insertar(jug10);
			jugadores3.insertar(jug11);
			Partida partida3 = new Partida("Partida3", jugadores3);
			
			partidas.insert(partida1);
			partidas.insert(partida2);
			partidas.insert(partida3);
			
			Pais pais1 = new Pais (1, "Uruguay", coordenada1);
			Pais pais2 = new Pais (2, "Brasil", coordenada2);
			Pais pais3 = new Pais (3, "Mexico", coordenada3);
			Pais pais4 = new Pais (4, "Chile", coordenada4);
			Pais pais5 = new Pais (5, "Argentina", coordenada5);
			Pais pais6 = new Pais (6, "Chile", coordenada6);
			Pais pais7 = new Pais (7, "Peru", coordenada6);
			
			mapa.insert(pais1);
			mapa.insert(pais2);
			mapa.insert(pais3);
			mapa.insert(pais4);
			mapa.insert(pais5);
			mapa.insert(pais6);
			mapa.insert(pais7);
			
			System.out.println("Partida en curso?: " + partidas.hayPartidaEnCurso());
			System.out.println("Inicio partida1 ... ");
			partidas.iniciarPartida("Partida1", mapa);
			System.out.println("Codigo partida en curso: " + partidas.partidaEnCurso().getCodigo());
//			System.out.println("Login de jugador incorrecto ");
//			fachadaJug.loginJugador("Juan");
			System.out.println("Login de jugador correcto ");
			fachadaJug.loginJugador("Jose");
			System.out.println("Obtengo tablero ");
			partidas.iniciarTurno("Partida1");
			System.out.println("Jugador en turno: "+partidas.partidaEnCurso().obtenerJugadorEnTurno().getNombre());
			
			DataJugador_R11[] tablero = fachadaJug.viusalizarTablero();
			DataPais_R11[] paises = tablero[0].getPaisesAsignados();
			System.out.println("Cant fichas dis de jugador1: "+ tablero[0].getCantFichasDisp());
			System.out.println("Primer pais de jugador1: "+ paises[0].getNombre());
			if (tablero[0].getCantFichasDisp() > 1){
				System.out.println("Distribuir 1 ficha de jugador "+ partidas.partidaEnCurso().obtenerJugadorEnTurno().getNombre()+" en pais "+paises[0].getNombre()+"...");
				fachadaJug.distribuirFichas("Jose", paises[0].getNombre(), 1);
				System.out.print("Fin pruebas..........\n");
			}
			
		} catch (RemoteException e) {
			e.printStackTrace();
//		} catch (PersistenciaException e) {
//			System.out.print(e.darMensaje());
		} catch (JugadoresException e) {
			System.out.print(e.darMensaje());
		} catch (PartidaException e) {
			System.out.print(e.darMensaje());
		} catch (PaisesException e) {
			System.out.print(e.darMensaje());
		}
		System.out.print("Fin pruebas..........\n");
	}
}
